<?php
session_start();

//Clase que se encarga de las acciones
class acciones {

    //Función que se encarga de insertar en la base de datos
    // PARAMETROS: $conn: Conexión a MySql
    function insertJurado($conn) {

        //Obtengo los datos que cargo el usuario
        $json = $_REQUEST['carga_jur'];
        //Quito el caracter slashes
        $json = stripslashes($json);
        $total_carga = $_REQUEST['total_carga'];

        //Decodifico el json
        $json = json_decode($json);

        $err = false;
        for($i=0;$i<$total_carga;$i++){
            //Obtengo los datos cargados
            $usuario = strip_tags($_POST['usuario']);
            $nom_usu = $_SESSION['usuario'];
            $categ = strip_tags($json[$i]->categ);
            $jurado = strip_tags($json[$i]->jurado);

            //Armo las secciones de categoria.
            //Las secciones 1 y 3 tienen los mismos jurados. Lo mismo para 2 y 4.
            if($categ == "1" || $categ == "3"){ 
                $sec_categ = "'1', '3'";
            }else{
                $sec_categ = "'2', '4'";
            }

            //Verifico si ya no voyo por el mismo jurado el usuario
            $sqlSelJur = "SELECT * FROM votos_jurados 
                    WHERE idusuario = '" . $usuario . "' 
                    and categoria IN (".$sec_categ.")
                    and idjurado = '" . $jurado . "'";

            $resultSelJur = mysql_query($sqlSelJur, $conn);

            if (!$resultSelJur) {
                $mensaje = 'Consulta no valida. Motivo: ' . mysql_error() . "\n";
                die($mensaje);
                return 0;
            }  

            //Si todavía no voto a este jurado
            if(mysql_num_rows($resultSelJur) == 0){

                mysql_free_result($resultSelJur);

                //Obtengo el nombre de las categorías
                $sqlCateg = "SELECT * FROM categoria
                            WHERE id IN(".$sec_categ.")";

                $resultCateg = mysql_query($sqlCateg, $conn);

                if (!$resultCateg) {
                    $mensaje = 'Consulta no valida. Motivo: ' . mysql_error() . "\n";
                    die($mensaje);
                    return 0;
                }

                $categ_usuario = "";
                while($arrCateg = mysql_fetch_assoc($resultCateg)){
                    $nom_categ = $arrCateg['descrip'];
                    $categ_usuario = $categ_usuario . $nom_categ . ", ";
                }

                //Armo si para las seccionoes el usuario voto menos de 3 veces
                $sql = "SELECT * FROM votos_jurados 
                            WHERE idusuario = '" . $usuario . "' AND 
                            categoria IN(".$sec_categ.")";

                $result = mysql_query($sql, $conn);

                if (!$result) {
                    $mensaje = 'Consulta no valida. Motivo: ' . mysql_error() . "\n";
                    die($mensaje);
                    return 0;
                }

                //Si es mayor o igual a 3 no puede realizar más votos
                if(mysql_num_rows($result) == 3 || mysql_num_rows($result) > 3){
                    echo "En las categorias: " . $categ_usuario . " ya realizo las 3 votaciones permitidas. <br>";
                    $err=true;
                }else{
                    //Libero memoria
                    mysql_free_result($result);

                    //Obtengo el nombre del jurado
                    $nom_jurado = $this->getNomJur($conn, $jurado);

                    $sqlIns = "";
                    //Inserto el registro en la base de datos
                    $sqlIns .= "INSERT INTO votos_jurados  (idusuario, idjurado, categoria, apellido, apellidoJurado) ";
                    $sqlIns .= " values(' " . $usuario . "', '" . $jurado . "', '" . $categ . "', '" . $nom_usu . "', '" . $nom_jurado . "')";

                    //Ejecuto la consulta
                    $resultInsert = mysql_query($sqlIns, $conn);

                    //Verifico si se realizo la consulta bien
                    if (!$resultInsert) {
                        $mensaje = 'Consulta no valida. Motivo: ' . mysql_error() . "\n";
                        die($mensaje);
                    }

                    echo "El jurado: " .$nom_jurado. " se registro con exito. <br>";
                }
            }else{
                $err = true;

                //Obtengo el nombre del jurado
                $nom_jurado = $this->getNomJur($conn, $jurado);

                echo "El jurado: " .$nom_jurado. " ya lo ha votado. <br>";
            }
        }

        //Verifico si hay errores
        if($err){
            die("");
        }else{
            return 1;
        }
    }

    //Obtiene el nombre del jurado
    function getNomJur($conn, $jurado){

        //Armo el query
        $sql = "SELECT * FROM lista_jurados_votos WHERE id = '" . $jurado . "'";

        //Obtengo el nombre del jurado
        $result = mysql_query($sql, $conn);

        if (!$result) {
            $mensaje = 'Consulta no valida. Motivo: ' . mysql_error() . "\n";
            die($mensaje);
            return 0;
        }

        //Creo el array
        $arr = mysql_fetch_assoc($result);

        //Tomo el valor
        $nom_jurado = $arr['nombre'];

        //Libero memoria
        mysql_free_result($result);

        return $nom_jurado;

    }

    //función que se encarga de cargar el jurados
    //con los datos de los clubes
    // PARAMETROS: $conexion: Recibe el objeto conexión
    function cargacomboJurados($conexion) {

        if(isset($_REQUEST['valor_categ'])){
            $categ = $_REQUEST['valor_categ'];

            //Las secciones 1 y 3 tienen los mismos jurados. Lo mismo para 2 y 4.
            if($categ == "1" || $categ == "3"){ 
                $sec_categ = "'1', '3'";
            }else{
                $sec_categ = "'2', '4'";
            }

            //Creo la consulta
            $sql = "SELECT * FROM lista_jurados_votos WHERE categoria IN(".$sec_categ.")";
        }else{
            //Creo la consulta
            $sql = "SELECT * FROM lista_jurados_votos ";
        }
        
        //Ejecuto la consulta
        $results = mysql_query($sql, $conexion);

        //Verifico si se realizo la consulta bien
        if (!$results) {
            $mensaje = 'Error al obtener los datos: ' . mysql_error() . "\n";
            die($mensaje);
        }

        //Creo un array que contendra los valores de la grilla
        $data = array();

        //Recorro la consulta
        while ($row = mysql_fetch_object($results)) {

            //Cargo el dato en el array
            $data [] = $row;
        }

        //Libero memoria
        mysql_free_result($results);

        //Paso el array
        return json_encode($data);
    }

    //Funcion que verifica si la votación esta abierta
    function votacionAbierta($conn){

        //Creo la consulta
        $sql = "SELECT * FROM config WHERE variable = 'votos_jurados' ";
        //Ejecuto la consulta
        $results = mysql_query($sql, $conn);

        //Verifico si se realizo la consulta bien
        if (!$results) {
            $mensaje = 'Error al obtener datos del config: ' . mysql_error() . "\n";
            die($mensaje);
        }

        //Creo el array
        $arr = mysql_fetch_assoc($results);

        //Tomo el valor
        $valor = $arr['valor'];

        if($valor == 'si'){
            $valorPerm = "true";
            //Devuelvo el usuario logueado
            $json = '{success:' . $valorPerm . ',open:[{"valor":"' . $valor . '"}]}';
        }else{
            $valorPerm = "false";
            $json = '{success:' . $valorPerm . ',open:[{"valor":"' . $valor . '"}]}';
        }

        return $json;
    }

    //Carga la grilla resultados
    function cargaGridResultado($conn){

        $categ = $_REQUEST['valor_categ'];
        $limite = $_REQUEST['limite'];

        //Las secciones 1 y 3 tienen los mismos jurados. Lo mismo para 2 y 4.
        if($categ == "1" || $categ == "3"){ 
            $sec_categ = "'1', '3'";
        }else{
            $sec_categ = "'2', '4'";
        }

        //Realizo la consulta obteniendo los más votados por cetegoria
        $sql = "SELECT apellidoJurado, COUNT(*) as votos 
                FROM votos_jurados
                WHERE categoria IN (".$sec_categ.")
                GROUP BY apellidoJurado
                ORDER BY votos DESC LIMIT " . $limite;

        //Ejecuto la consulta
        $results = mysql_query($sql, $conn);

        //Verifico si se realizo la consulta bien
        if (!$results) {
            $mensaje = 'Consulta no válida: ' . mysql_error() . "\n";
            die($mensaje);
        }

        //Cuento la cantidad total de registros de la tabla
        $nTot = mysql_num_rows($results);

        //Creo un array que contendra los valores de la grilla
        $data = array();

        //Recorro la consulta
        while ($row = mysql_fetch_object($results)) {

            //Cargo el dato en el array
            $data [] = $row;
        }

        //Libero memoria
        mysql_free_result($results);

        //Paso el array
        return '{"totalCount": "' . $nTot . '", "Resultado":' . json_encode($data) . '}';

    }

    //Para obtener si es superadmin
    function permisos($conn){
        //Para obtener el superadmin
        $usuario = $_SESSION['usuario'];
        
        //Verifico si tiene permisos para ingresar al formulario
        $sqlPermisos = "SELECT * FROM login where usuario = '" . $usuario . "'";
        $resPerm = mysql_query($sqlPermisos,$conn);
        
        //Verifico si se ejecuto la consulta
        if (!$resPerm) {
            $mensaje = 'Consulta no valida : ' . mysql_error() . "\n";
            die($mensaje);
            return 0;
        }
        
        //Recorro la consulta
        while ($row = mysql_fetch_object($resPerm)) {

            //Tomo el valor de superadmin
            $permiso = $row->superAdmin;
        }
        
        //Verifico si el usuario logueado tiene permisos
        if ($permiso == 1){
            $valorPerm = "true";
        }else{
            $valorPerm = "false";
        }

        //Devuelvo el usuario logueado
        $json = '{success:' . $valorPerm . ',usuario:[{"id":1,"user":"'.$usuario.'"}]}'; 
        
        //Retorno el JSON
        return $json;
        
    }

}

/* * ******************************************************************* */
/* Agregamos las funciones */
include "funciones.php";

//Creo el objeto funciones
$obj = new funciones;
//Conecto a MySql
$conexion = $obj->conexion();

//Instancio la clase
$acc = new acciones();

//Verifico si esta definida el parametro action
if (isset($_POST['action']) || isset($_GET['myaction'])) {

    //Tomo el valor
    $accion = (isset($_POST['action']) ? $_POST['action'] : $_GET['myaction']);

    //Verifico la accion
    switch ($accion) {

        //Graba el registro en la bd
        case $accion == 'insert':
            $valor = $acc->insertJurado($conexion);
            //Redirecciono
            $js = "<script> window.location = '../php/formVotacion.php?inserto=".$valor."';  </script>";
            die($js);
            break;

        //Carga la grilla resultado
        case $accion == 'resultado':
            $datos = $acc->cargaGridResultado($conexion);
            //Cargo los datos
            echo $datos;
            break;

        //Carga el combo categ
        case $accion == 'categ':
            //Cargo el combo
            $datos = $obj->cargacomboCateg($conexion);
            //Cargo los datos
            echo $datos;
            return;
            break;
        
        //Carga el combo jurados
        case $accion == 'jurados':
            $datos = $acc->cargacomboJurados($conexion);
            //Cargo los datos
            echo $datos;
            return;
            break;

        //Verifica si se puede votar
        case $accion == 'votacionAbierta':
            $datos = $acc->votacionAbierta($conexion);
            //Cargo los datos
            echo $datos;
            return;
            break;

        //Para saber si es superadmin
        case $accion == 'permisos':
            $datos = $acc->permisos($conexion);
            //Cargo los datos
            echo $datos;
            return;
            break;
    }
} 

//Cierro la conexion
$obj->cerrarConn($conexion);
?>